package cn.neusoft.mapper;

import cn.neusoft.domain.Dept;
import cn.neusoft.domain.Substation;
import cn.neusoft.domain.Task;
import cn.neusoft.domain.Warehouse;
import cn.neusoft.query.BaseQuery;


import java.util.List;

public interface TaskMapper {

    int add(Task task);

    int deleteById(String task_id);

    int update(Task task);

    Task findById(String task_id);

    List<Task> findAll();

    List<Task> findByCondition(BaseQuery query);

    /**
     * 这个sql用于在调度时找到合适的备选分站
     *  首先在warehouse_commodity表中根据warehouse_id分组，将amount相加，得到每个库房当前存储的总商品数量(total_amount)；
     *  然后将warehouse表和warehouse_commodity表根据warehouse_id做左连接,
     *      得到max_value - total_amount大于传入数量(即库房要有足够的空间来存储将入库的商品)，
     *      且warehouse_level != 0(排除中心库房，调度时不考虑中心库房)的库房的id
     *  最后在substation表中查找parent_id在上述库房id之中的分站，并取出对应的分站id和坐标
     * @param amount
     * @return
     */
    List<Substation> findFittingSubstation(Long amount);

    // 根据分站id得到其上级的库房
    Warehouse findWarehouseBySubstationId(Long substation_id);
}